﻿namespace class_14_3_结构
{
    using System;

    // 习题：手机系统模拟
    public struct Phone
    {
        // 品牌
        public string Brand;
        // 型号
        public string Model;
        // 电池电量百分比
        public int BatteryLevel;
        // 是否开机
        public bool IsPowerOn;

        // 构造函数
        public Phone(string brand, string model)
        {
            Brand = brand;
            Model = model;
            BatteryLevel = 100;  // 新手机默认满电
            IsPowerOn = true;    // 新手机默认开机
        }

        // 开机
        public void PowerOn()
        {
            if (!IsPowerOn)
            {
                IsPowerOn = true;
                Console.WriteLine($"{Brand} {Model} 已开机");
            }
            else
            {
                Console.WriteLine($"{Brand} {Model} 已经是开机状态");
            }
        }

        // 关机
        public void PowerOff()
        {
            if (IsPowerOn)
            {
                IsPowerOn = false;
                Console.WriteLine($"{Brand} {Model} 已关机");
            }
            else
            {
                Console.WriteLine($"{Brand} {Model} 已经是关机状态");
            }
        }

        // 使用手机（消耗电量）
        public void Use(int minutes)
        {
            if (!IsPowerOn)
            {
                Console.WriteLine("手机已关机，无法使用");
                return;
            }

            // 每分钟消耗1%电量
            int batteryConsumed = minutes;

            if (BatteryLevel <= 0)
            {
                Console.WriteLine("电量已耗尽，手机自动关机");
                IsPowerOn = false;
                return;
            }

            BatteryLevel = Math.Max(0, BatteryLevel - batteryConsumed);
            Console.WriteLine($"使用了 {minutes} 分钟，剩余电量: {BatteryLevel}%");

            if (BatteryLevel <= 0)
            {
                Console.WriteLine("电量已耗尽，手机自动关机");
                IsPowerOn = false;
            }
            else if (BatteryLevel <= 10)
            {
                Console.WriteLine("警告：电量低，请充电！");
            }
        }

        // 充电
        public void Charge(int minutes)
        {
            if (IsPowerOn)
            {
                Console.WriteLine("充电时请关机以获得最佳效果");
            }

            // 每分钟充电2%电量
            int batteryGained = minutes * 2;
            BatteryLevel = Math.Min(100, BatteryLevel + batteryGained);
            Console.WriteLine($"充电 {minutes} 分钟，当前电量: {BatteryLevel}%");
        }

        // 显示手机信息
        public void DisplayInfo()
        {
            Console.WriteLine($"品牌: {Brand}");
            Console.WriteLine($"型号: {Model}");
            Console.WriteLine($"电量: {BatteryLevel}%");
            Console.WriteLine($"状态: {(IsPowerOn ? "开机" : "关机")}");
            Console.WriteLine("-------------------");
        }
    }

    class Program
    {
        static void Main()
        {
            // 创建一个新手机
            Phone myPhone = new Phone("Apple", "iPhone 15");

            Console.WriteLine("新手机信息:");
            myPhone.DisplayInfo();

            // 使用手机
            myPhone.Use(30);
            myPhone.DisplayInfo();

            // 继续使用直到电量耗尽
            myPhone.Use(80);
            myPhone.DisplayInfo();

            // 尝试在关机状态下使用
            myPhone.Use(10);

            // 充电
            myPhone.Charge(20);
            myPhone.DisplayInfo();

            // 开机
            myPhone.PowerOn();
            myPhone.DisplayInfo();

            // 再使用一会儿
            myPhone.Use(15);
            myPhone.DisplayInfo();
        }
    }
}
